#pragma once

//#include <windows.h>

//namespace NT {
	typedef LONG NTSTATUS;

	typedef enum _THREAD_INFORMATION_CLASS {
		ThreadBasicInformation, ThreadTimes, ThreadPriority, ThreadBasePriority, ThreadAffinityMask, ThreadImpersonationToken, ThreadDescriptorTableEntry, 
		ThreadEnableAlignmentFaultFixup, ThreadEventPair, ThreadQuerySetWin32StartAddress, ThreadZeroTlsCell, ThreadPerformanceCount, 
		ThreadAmILastThread, ThreadIdealProcessor, ThreadPriorityBoost, ThreadSetTlsArrayAddress, ThreadIsIoPending, ThreadHideFromDebugger
	} THREAD_INFORMATION_CLASS, *PTHREAD_INFORMATION_CLASS;

	extern "C" NTSYSAPI NTSTATUS NTAPI NtQueryInformationThread(IN HANDLE ThreadHandle, IN THREAD_INFORMATION_CLASS ThreadInformationClass, 
		OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength, OUT PULONG ReturnLength OPTIONAL );

	typedef struct _CLIENT_ID {
		HANDLE UniqueProcess;
		HANDLE UniqueThread;
	} CLIENT_ID;
	typedef CLIENT_ID *PCLIENT_ID;

	typedef LONG KPRIORITY;

	typedef struct _THREAD_BASIC_INFORMATION {
		NTSTATUS ExitStatus; 
		PVOID TebBaseAddress; 
		CLIENT_ID ClientId; 
		KAFFINITY AffinityMask; 
		KPRIORITY Priority; 
		KPRIORITY BasePriority;
	} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;

//}

#pragma comment(lib, "ntdll.lib")
